import BackendjsFunctions from '@/core/BackendjsFunctions.js'
import { backendjsFunctions } from '@/core/functions.js'

export default {

  /**
   * 在页面的主体区域增加主容器
   * form: {
      position: number 增加位置 -1 顶部 , -2 底部 其他均为当前mainbox容器列表中的index键
      girdtype: 栅格 col 对应的参数
      col: number多少列
    }
   * @param {*} form
   */
  addSpublicContainerMainBox (form) {
    BackendjsFunctions._verification('addSpublicContainerMainBox')
    return new Promise((resolve, reject) => {
      try {
        backendjsFunctions().addSpublicContainerMainBox(form)
        resolve(form)
      } catch (error) {
        reject(error)
      }
    })
  },
  /**
   * 对页面的主体区域增加一些布局方式
   * @param {number} position 增加位置 -1 顶部 , -2 底部
   * @param {number} type 增加的类型 1 常用布局 , 2 其他布局
   * @param {number} identifier 对应的布局类型中的id编号
   * @returns boolean 是否成功
   */
  addSpublicContainers (position, type, identifier) {
    BackendjsFunctions._verification('addSpublicContainers')
    try {
      return backendjsFunctions().addSpublicContainers(parseInt(position), parseInt(type), parseInt(identifier))
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 对页面的主体区域增加一些常用的渲染模块
   * @param {number} position 增加位置 -1 顶部 , -2 底部
   * @param {number} identifier 对应渲染内容的id编号
   * @returns boolean 是否成功
   */
  addSpublicModule (position, identifier) {
    BackendjsFunctions._verification('addSpublicModule')
    try {
      return backendjsFunctions().addSpublicModule(parseInt(position), parseInt(identifier))
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 获取 Spublic Module 的静态数据内容
   */
  getSpublicModuleStatic () {
    BackendjsFunctions._verification('getSpublicModuleStatic')
    try {
      return backendjsFunctions().getSpublicModuleStatic()
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 对主体区域主容器的设置
   * @param {*} bjContainerMainbox 即传入到主容器编辑区域的数据，其中 bjContainerMainbox._other._tmpId 为识别主容器标识
   * @returns
   */
  setSpublicContainerMainBox (bjContainerMainbox) {
    BackendjsFunctions._verification('setSpublicContainerMainBox')
    return new Promise((resolve, reject) => {
      try {
        backendjsFunctions().setSpublicContainerMainBox(bjContainerMainbox)
        resolve(bjContainerMainbox)
      } catch (error) {
        reject(error)
      }
    })
  },
  /**
   * 在页面的主体区域对某一个主容器或者容器增加栅格
   * form : {
      position: number 增加位置 -1 顶部 , -2 底部 其他均为当前mainbox容器列表中的index键
      girdtype: 栅格 col 对应的参数
      col: number多少列
      parentBoxTmpId: 对应的添加父级容器临时ID
    }
    * @returns false 或 删除后的 col 数据
    */
  addSpublicContainerCol (form) {
    BackendjsFunctions._verification('addSpublicContainerCol')
    try {
      return backendjsFunctions().addSpublicContainerCol(form)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 判断是否能删除主容器区域的栅格，如果栅格的父级只剩下一个栅格的时候会返回false
   * @param {*} tmpId 删除栅格的标识
   * @returns boolean
   */
  isDelSpublicContainerCol (tmpId) {
    BackendjsFunctions._verification('isDelSpublicContainerCol')
    try {
      return backendjsFunctions().isDelSpublicContainerCol(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 删除主容器区域的栅格，如果栅格的父级只剩下一个栅格的时候会返回false
   * @param {*} tmpId 删除栅格的标识
   * @returns false 或 删除后的 col 数据
   */
  delSpublicContainerCol (tmpId) {
    BackendjsFunctions._verification('delSpublicContainerCol')
    try {
      return backendjsFunctions().delSpublicContainerCol(tmpId)
    } catch (error) {
      console.error(error)
    }
    return null
  },
  /**
   * 主体区域 对排序好的的栅格数据传入到 backendjs 段进行写入排序，同时如果排序写入正常返回传入的参数数据
   * @param {*} dtcols
   * @returns
   */
  sortSpublicContainerCol (dtcols) {
    BackendjsFunctions._verification('sortSpublicContainerCol')
    try {
      return backendjsFunctions().sortSpublicContainerCol(dtcols)
    } catch (error) {
      console.error(error)
    }
    return null
  }
}
